package vendas;

import excecoes.ValorNegativoException;
import pessoa.Cliente;

/**
 * Essa classe representa uma venda a vista, ela herda da classe Venda, e acrescenta
 * os atributos, numeroParcelas, cliente e porcetagemJuros, alem do metodo para
 * calcular a juros 
 *
 */
public class VendaPrazo extends Venda{

	private int numeroParcelas;
	private Cliente cliente;
	
	/**
	 * Esse construtor inicia os atributos valor e valor_final com 0, data com a data em que
	 * o objeto for instanciado, e atribui o numero de parcelas e o cliente que foi passado
	 * 
	 * @param numeroParcelas
	 * @param cliente
	 * 
	 * @throws ValorNegativoException se numeroParcelas for menor que 1 
	 */
	public VendaPrazo(int numeroParcelas, Cliente cliente)
			throws ValorNegativoException{
		
		super();
		
		if(cliente == null){
			
			throw new RuntimeException("cliente nulo");
			
		}
		
		if(numeroParcelas < 1){
			
			throw new ValorNegativoException("Deve ser informado um valor maior que 1 para numeroPacela");
			
		}
		
		this.numeroParcelas = numeroParcelas;
		this.cliente = cliente;
		
	}
	
	public void adicionarItem(ItemVenda item){

		/*
		 * Chama o metodo de adicionar da superclasse
		 */
		super.adicionarItem(item);
		
		/*
		 *calcula o juros fazendo preco do produto X taxa de juros, e soma ao valor
		 *guardando na variavel valor final  
		 */
		valor_final += (item.getProduto().getPreco_venda() * 
						(item.getProduto().getTaxa_juros()/100));
	}
	
	/**
	 * Excluir um item da venda
	 */
	public void excluirItem(ItemVenda item){

		super.excluirItem(item);
		
		/*
		 *Subtrai do valor final o valor do juros do produto
		 */
		valor_final -= (item.getProduto().getPreco_venda() * 
						(item.getProduto().getTaxa_juros()/100));

	}
	
	public String toString(){
		
		String result = "";
		
		result += "Venda a prazo \n\n" +
				  "Cliente \n\n" + cliente.toString() + 
				  super.toString();
		
		return result;
	}
	
}//VendaPrazo
